package com.bjfu.demo.controller.pycontroller;

import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import com.bjfu.demo.dao.SearchDto;
import com.bjfu.demo.dto.CityDayEvaluationVo;
import com.bjfu.demo.dto.CityHourEvaluationVo;
import com.bjfu.demo.dto.CityLast7daysVo;
import com.bjfu.demo.dto.CityMonthEvaluationVo;
import com.bjfu.demo.dto.CityQuarterlyDataVo;
import com.bjfu.demo.dto.HistoricalAirdata24HourVo;
import com.bjfu.demo.dto.HistoricalAirdata7DayVo;
import com.bjfu.demo.dto.RankingVo;
import com.bjfu.demo.entity.pojo.PyResult;
import com.bjfu.demo.service.PyService;

import io.swagger.annotations.ApiOperation;

/**
 * Created on 2021-04-29
 * 参考file里的发布系统接口（python全）v2.md
 * 参考file里的发布系统接口（python全）v2.md
 * 参考file里的发布系统接口（python全）v2.md
 *
 */
@RestController
public class PyController {

    @Autowired
    private PyService pyService;


    /**
     * 接口1 获取所有站点最新空气数据
     */
    @ApiOperation(value = "获取所有站点最新空气数据（1）")
    @GetMapping("/get_all_data")
    public Object getAllData() {
        return PyResult.OK(pyService.getAllData());
    }

    /**
     * 接口2 获取当前城市下所有站点的数据
     */
    @ApiOperation(value = "获取当前城市下所有站点的数据（1）")
    @RequestMapping("/currentcity")
    public Object currentcity(@RequestBody Map<String, String> map) {
        return PyResult.OK(pyService.currentcity(map.get("city")));
    }

    /**
     * 接口3 获取所有城市的空气数据（站点均值，空气质量等级众数）
     */
    //// TODO: 2021/4/29
    @ApiOperation(value = "获取所有城市的空气数据(1)")
    @GetMapping("/all_city")
    public Object allCity() {
        List list = pyService.allCity();
        return PyResult.OK(list);
    }

    /**
     * 接口4 根据城市、清新等级名称、时间查询相应站点
     *
     * @return {
     * "city": "温州"，
     * "searchDayTime": "2020-03-24",
     * "AIRLEVELNAME": "不清新"
     * }
     */
    @ApiOperation(value = "根据城市、清新等级名称、时间查询相应站点（1）")
    @PostMapping("/search")
    public Object search(@RequestBody SearchDto searchDto) {
        List search = pyService.search(searchDto);
        return PyResult.OK(search);
    }

    /**
     * 接口5 站点界面：站点曲线数据查询
     * 用以展示所有站点24小时、7天
     * （的历史数据 # 空气清新等级-ALRVALUE、负氧离子-COL1、PM2.5-COL2、O3-COL3）。
     */
    @ApiOperation(value = "用以展示所有站点24小时、7天（1）")
    @RequestMapping("/historical_airdata")
    //// TODO: 2021/5/14  
    public Object historicalAirdata(@RequestBody Map<String, Integer> map) {
        int timeType = map.get("timeType");
        if (timeType == 1) {
            //24小时
            List<HistoricalAirdata24HourVo> vos = pyService.historicalAirdata24Hour();
            return PyResult.OK(vos);
        } else if (timeType == 2) {
            //7天
            List<HistoricalAirdata7DayVo> historicalAirdata7DayVos = pyService.historicalAirdata7Day();
            return PyResult.OK(historicalAirdata7DayVos);
        }

        return PyResult.OK();
    }

    /**
     * 接口6 获取站点前一日的日均值
     */
    @ApiOperation(value = "获取站点前一日的日均值(1)")
    @GetMapping("/city_last7days")
    public Object cityLast7days() {
        List<CityLast7daysVo> cityLast7daysVos = pyService.cityLast7days();
        return PyResult.OK(cityLast7daysVos);
    }

    /**
     * 接口7 根据站点负氧离子值当前值排行（取前十名即可）
     */
    @ApiOperation(value = "根据城市、清新等级名称、时间查询相应站点（1）")
    @GetMapping("/ranking")
    public Object ranking() {
        List<RankingVo> ranking = pyService.ranking();
        return PyResult.OK(ranking);
    }


    /**
     * 接口8 获取所有城市“小时评价”数据
     */
    @ApiOperation(value = "根据城市、清新等级名称、时间查询相应站点（1）")
    @GetMapping("/city_hour_evaluation")
    public Object cityHourEvaluation() {

        List<CityHourEvaluationVo> cityHourEvaluationVos = pyService.cityHourEvaluation();
        return PyResult.OK(cityHourEvaluationVos);
    }

    /**
     * 接口9 获取所有城市“日评价”数据（AIRLEVELNAME或AIRLEVELCODE取众数）
     */
    @ApiOperation(value = "获取所有城市“日评价”数据（AIRLEVELNAME或AIRLEVELCODE取众数）（1）")
    @GetMapping("/city_day_evaluation")
    public Object cityDayEvaluation() {
        List<CityDayEvaluationVo> cityDayEvaluationVos = pyService.cityDayEvaluation();
        return PyResult.OK(cityDayEvaluationVos);
    }

    /**
     * 接口10 获取所有城市“日评价”数据（AIRLEVELNAME或AIRLEVELCODE取众数）
     */
    @ApiOperation(value = "获取所有城市“月评价”数据(每个城市当月“空气清新等级”比率)(1)")
    @GetMapping("/city_month_evaluation")
    public Object cityMonthEvaluation() {
        List<CityMonthEvaluationVo> cityMonthEvaluationVos = pyService.cityMonthEvaluation();
        return PyResult.OK(cityMonthEvaluationVos);
    }
    /**
     * 接口11 city_quarterly_data
     */
    @ApiOperation(value = "接口11 获取所有城市“季度评价”数据(每个城市当月“空气清新等级”比率)(1)")
    @GetMapping("/city_quarterly_data")
    public Object cityQuarterlyData() {
        List<CityQuarterlyDataVo> cityQuarterlyDataVos = pyService.cityQuarterlyData();
        return PyResult.OK(cityQuarterlyDataVos);
    }


}
